#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <assert.h>
#include <string.h>
char* my_strncpy(char* dest,const char* src,size_t num)
{
	assert(dest && src);
	char* ret = dest;
	int i = 0;
	for (i = 0; i < num + 1; i++)
	{
		*dest = *src;
		dest++;
		src ++;
	}
	return ret;
}
//int main()
//{
//	char str1[] = "hello world";
//	char str2[20] = "xxxxxxxxxxxxxx";
//	printf("%s\n", strncpy(str2,str1,5));
//
//	return 0;
//}
char* my_strncat(char* dest, const char* src, size_t num)
{
	assert(dest && src);
	char* ret = dest;
	while (*dest != '\0')
	{
		dest++;
	}
	int i = 0;
	for (i = 0; i < num; i++)
	{
		*dest = *src;
		dest++;
		src++;
	}
	*dest = '\0';
	return ret;
}
//int main()
//{
//	char str1[20] = "hello ";
//	char str2[] = "worldxxxxxxxx";
//	printf("%s\n", my_strncat(str1,str2,5));
//	return 0;
//}
void* my_memcpy(void* dest,const void* src,size_t num)
{
	assert(dest && src);
	void* ret = dest;
	int i = 0;
	for (i = 0; i < num; i++)
	{
		*((char*)dest) = *((char*)src);
		dest = (char*)dest + 1;
		src = (char*)src + 1;
	}
	return ret;
}
void print_arrint(int arr[], int sz)
{
	int i = 0;
	for (i = 0; i < sz; i++)
	{
		printf("%d ", arr[i]);
	}
	printf("\n");
}
//int main()
//{
//	int arr1[] = { 1,2,3,4,5 };
//	int arr2[10] = { 0 };
//	my_memcpy(arr2, arr1, 20);
//	print_arrint(arr2, 5);
//	return 0;
//}
void* my_memmove(void* dest,const void* src,size_t num)
{
	assert(dest && src);
	void* ret = dest;
	int i = 0;
	if (src < dest)
	{
		for (i = 0; i < num; i++)
		{
			*((char*)dest + num - 1 - i)= *((char*)src + num - 1 - i);
		}
	}
	else
	{
		for (i = 0; i < num; i++)
		{
			*((char*)dest) = *((char*)src);
			dest = (char*)dest + 1;
			src = (char*)src + 1;
		}
	}
	return ret;
}
//int main()
//{
//	int arr[] = { 1,2,3,4,5,6,7,8,9,10 };
//	int sz = sizeof(arr) / sizeof(arr[0]);
//	my_memmove(arr + 2,arr,20);
//	print_arrint(arr, sz);
//	return 0;
//}
//int main()
//{
//	int a = 0x11223344;
//	char* p = &a;
//
//	return 0;
//}
//int main()
//{
//	char a = '\0';
//
//	return 0;
//}
//int main()
//{
//	char a[1000] = { 0 };
//	int i = 0;
//	for (i = 0; i < 1000; i++)
//	{
//		a[i] = -1 - i;
//	}
//	printf("%d", strlen(a));
//	return 0;
//}
